#pragma once
#include <cstdlib>
template <class T>
class Simple_allocator
{
public:
    T *allocate(int n) { return static_cast<T *>(malloc(n * sizeof(T))); }
    void deallocate(T *p, int n) { free(p); }
    void construct(T *p, const T &v) { new (p) T(v); }
    void destroy(T *p) { p->~T(); }
};